/**
 * @define:hjc -> 辅助库 -> 合法性检查
 * */

namespace utils {

	/**
	 * 获得合法数值
	 * @param:num {any} 判断值
	 * @param:*dflt {number} 非法数值时默认返回值
	 * @param:*floor {number} 目标最小范围
	 * @param:*ceil {number} 目标最大范围
	 * @return:{number} 合法数值
	*/
	export function num(num: any, dflt: number = 0, floor?: number, ceil?: number): number {
		if (numeric(num)) {
			if (numeric(floor) && num < floor) return floor;
			else if (numeric(ceil) && num > ceil) return ceil;
			else return num;
		} else return dflt;
	}

	/**
	 * 获得合法字符串
	 * @param:str {any} 判断值
	 * @param:*dflt {string} 默认字符串
	 * @param:*numLen {number} 如果目标为数值且不足指定位则在前面补'0'
	 * @return:{string} 合法字符串
	*/
	export function str(str: any, dflt: string = '', numLen?: number): string {
		if (isEmpty(str)) return dflt;
		if (numLen && typeof str === 'number' && str.toString().length < numLen) {
			return Array.fill('0', numLen - str.toString().length).join('') + str;
		}
		return str.toString() + '';
	}

	/**
	 * 获的合法数组
	 * @param:arr {any} 判断值
	 * @param:*dflt {Array<any>} 默认数值
	 * @return:{Array<any>} 合法数组
	 */
	export function arr(arr: any, dflt: Array<any> = []): Array<any> {
		if (!isArray(arr)) return dflt;
		else return arr;
	}

}